package ade.prime.service ;

import ade.prime.model.Lesson ;
import ade.prime.model.Schedule ;

interface AdeWebServiceListener {

/**
 * Called when a new schedule has been added.
 *
 * @param newSchedule added {@code Schedule}
 */
void handleNewSchedule(in Schedule newSchedule) ;

/**
 * Called when a schedule has been modified (not updated).
 *
 * @param modifiedSchedule modified {@code Schedule}
 */
void handleModifiedSchedule(in Schedule modifiedSchedule) ;

/**
 * Called when a schedule has been removed.
 *
 * @param removedSchedule removed {@code Schedule}
 */
void handleRemovedSchedule(in Schedule removedSchedule) ;

/**
 * Called when a schedule state has changed.
 *
 * @param modifiedSchedule {@code Schedule} whose state has changed
 */
void handleModifiedScheduleState(in Schedule modifiedSchedule) ;

/**
 * Called when a lesson type has changed.
 *
 * @param modifiedLesson {@code Lesson} whose type has changed
 */
void handleModifiedLessonType(in Lesson modifiedLesson) ;

/**
 * Called when a lesson history has been removed.
 *
 * @param modifiedLesson {@code Lesson} whose history has been removed
 */
void handleRemovedLessonHistory(long lessonId) ;

/**
 * Called when the options values have changed.
 */
void handleModifiedOptions() ;

/**
 * Returns the identifier of this listener.
 */
int getId() ;

}